﻿Imports System.Data
Imports System.Text
Imports System.IO
Imports System.Collections.ObjectModel

Public Class CCOVAFTLServicio
    Public Function ObtenerTipos(ByVal intFuncion As Integer) As List(Of CTipo)
        Return CServicioLocalSQLServerDB.ObtenerTipos(intFuncion)
    End Function

    Public Function ObtieneClavesOp() As DataTable
        Return CServicioLocalSQLServerDB.ObtieneClavesOp()
    End Function

    Public Function ObtieneInstrumentos() As DataTable
        Return CServiciosMacrosSyBaseDB.ObtieneInstrumentos()
    End Function

    Public Function ObtienePortfolios() As DataTable
        Return CServiciosMacrosSyBaseDB.ObtienePortfolios()
    End Function

    Public Function ObtieneRutaUDI() As String
        Return CServicioLocalSQLServerDB.ObtieneRutaUDI()
    End Function

    Public Function ObtieneRutaValmer() As String
        Return CServicioLocalSQLServerDB.ObtieneRutaValmer()
    End Function

    Public Function ObtieneBrokers() As DataTable
        Return CServiciosMacrosSyBaseDB.ObtieneBrokers()
    End Function

    Public Function ObtieneCampos(ByVal Tipo As CTipo) As DataTable
        Return CServicioLocalSQLServerDB.ObtieneCampos(Tipo)
    End Function

    Public Function ObtieneRutaDECALOG() As String
        Return CServicioLocalSQLServerDB.ObtieneRutaDECALOG()
    End Function

    Public Function ObtieneFechasBorrado() As List(Of CFechaBorrado)
        Return CServicioLocalSQLServerDB.ObtieneFechasBorrado()
    End Function

    Public Function ObtieneTransaccionesABorrar(ByVal strFecha As String) As DataTable
        Return CServiciosMacrosSyBaseDB.ObtieneTransaccionesABorrar(strFecha)
    End Function

    Public Function ObtieneChequerasABorrar(ByVal strFecha As String) As DataTable
        Return CServiciosMacrosSyBaseDB.ObtieneChequerasABorrar(strFecha)
    End Function

    Public Function ObtieneRutaTransaccionesABorrar() As String
        Return CServicioLocalSQLServerDB.ObtieneRutaTransaccionesABorrar()
    End Function

    Public Function ObtieneRutaChequerasABorrar() As String
        Return CServicioLocalSQLServerDB.ObtieneRutaChequerasABorrar()
    End Function

    Public Function ObtieneRutaTLOADER() As String
        Return CServicioLocalSQLServerDB.ObtieneRutaTLOADER()
    End Function

    Public Function ObtieneInicioRengCOFAVTLPorvenir() As String
        Return CServicioLocalSQLServerDB.ObtieneInicioRengCOFAVTLPorvenir()
    End Function

    Public Function EjecutarProceso(ByVal comando As String, ByVal argumentos As String) As Boolean
        Dim proceso As New Process()
        Dim idRegBit As Integer

        Try
            proceso.EnableRaisingEvents = True
            proceso.StartInfo.FileName = comando
            proceso.StartInfo.Arguments = argumentos
            proceso.Start()
            idRegBit = CUtileria.GrabarBitacora("COVAFTL", "T-Loader", "Se envía el archivo al T-Loader, proceso ID: " & proceso.Id)
            proceso.Close()
            CUtileria.CompletarRegBitacora(idRegBit)

            Return True

        Catch ex As Exception
            idRegBit = CUtileria.GrabarBitacora("COVAFTL", "T-Loader", ex.Message)
            CUtileria.CompletarRegBitacora(idRegBit)
            Return False
        End Try
    End Function

    Public Function ObtieneSegundosEspera() As Integer
        Return CServicioLocalSQLServerDB.ObtieneSegundosEspera()
    End Function

    Public Function ObtieneBrokersPorvenir() As DataTable
        Return CServicioLocalSQLServerDB.ObtieneBrokersPorvenir()
    End Function

    Public Function ObtieneClavesOperacion() As ObservableCollection(Of CClavesOp)
        Dim lstClavesOp As New ObservableCollection(Of CClavesOp)
        Dim clave As CClavesOp
        Try
            Dim dt = CServicioLocalSQLServerDB.ObtieneClavesOp()
            For Each drAux As DataRow In dt.Rows
                clave = New CClavesOp()
                clave.Mercado = drAux("MERCADO")
                clave.TipoInversion = drAux("TIPO_INVERSION")
                clave.TipoTransaccion = drAux("TIPO_TRANSACCION")
                clave.TipoOperacion = drAux("TIPO_OPERACION")
                clave.InversionCovafsys = drAux("INVERSION_COVAFSYS")
                clave.TransaccionCovafsys = drAux("TRANSACCION_COVAFSYS")
                clave.DescripcionCovafsys = drAux("DESCRIPCION_COVAFSYS")
                clave.Comision = drAux("COMISION")
                clave.Impuesto = drAux("IMPUESTO")
                clave.Calcular = drAux("CALCULAR")
                lstClavesOp.Add(clave)
            Next
        Catch ex As Exception
            Throw ex
        End Try
        Return lstClavesOp
    End Function

    Public Function ObtieneParametrosTLOADERCOVAFTLTraspasos() As String
        Return CServicioLocalSQLServerDB.ObtieneParametrosTLOADERCOVAFTLTraspasos()
    End Function

    Public Function ObtieneTablaValmer(ByVal strRuta As String) As DataTable
        Try
            Return CAccesoHTML.ObtieneTablaValmer(strRuta)
        Catch ex As Exception
            Return Nothing
        End Try
    End Function

    Public Function AltaBrokerPorvenir(ByVal strFax As String, ByVal strBroker As String, ByVal intUsuario As Integer) As Integer
        Return CServicioLocalSQLServerDB.AltaBrokerPorvenir(strFax, strBroker, intUsuario)
    End Function

    Public Function ActualizaBrokerPorvenir(ByVal brokerViejo As CBrokerPorvenir, ByVal brokerNuevo As CBrokerPorvenir, ByVal intUsuario As Integer, ByVal intOpcion As Int16)
        Return CServicioLocalSQLServerDB.ActualizaBrokerPorvenir(brokerViejo.FAX_NUM, brokerViejo.BROKER_COD, brokerNuevo.FAX_NUM, brokerNuevo.BROKER_COD, intUsuario, intOpcion)
    End Function

    Public Function EliminaBrokerPorvenir(ByVal strFax As String, ByVal strBroker As String) As Boolean
        Try
            Dim intB As Integer = CUtileria.GrabarBitacora("ConfigBrokerPorvenir", "Borrar registro", "Eliminación del FAX_NUM = " & strFax & " y BROKER_COD = " & strBroker)

            Dim blnResultado As Boolean = CServicioLocalSQLServerDB.EliminaBrokerPorvenir(strFax, strBroker)

            CUtileria.CompletarRegBitacora(intB)

            Return blnResultado
        Catch ex As Exception
            Dim intBError As Integer = CUtileria.GrabarBitacora("ConfigBrokerPorvenir", "Borrar registro", ex.Message)
            CUtileria.CompletarRegBitacora(intBError)

            Return False
        End Try
    End Function

    Public Function InsertaBitacoraDECALOG(ByVal strNombreArchivo As String, ByVal intUsuario As Integer) As Integer
        Try
            Return CServicioLocalSQLServerDB.InsertaBitacoraDECALOG(7, strNombreArchivo, intUsuario)
        Catch ex As Exception
            Dim idRegBit As Integer = CUtileria.GrabarBitacora("COVAFTL", "GuardarBitacoraDECALOG", "Error al guardar el folio Decalog para el archivo: " & strNombreArchivo & ". Error: " & ex.Message)
            CUtileria.CompletarRegBitacora(idRegBit)

            Return 0
        End Try
    End Function

    Public Function InsertaBitacoraDECALOGPorvenir(ByVal strNombreArchivo As String, ByVal intUsuario As Integer) As Integer
        Try
            Return CServicioLocalSQLServerDB.InsertaBitacoraDECALOG(8, strNombreArchivo, intUsuario)
        Catch ex As Exception
            Dim idRegBit As Integer = CUtileria.GrabarBitacora("COVAFTLPorvenir", "GuardarBitacoraDECALOG", "Error al guardar el folio Decalog para el archivo: " & strNombreArchivo & ". Error: " & ex.Message)
            CUtileria.CompletarRegBitacora(idRegBit)

            Return 0
        End Try
    End Function

    Public Function ActualizaBitacoraDECALOG(ByVal intId As Integer, ByVal intEstatus As Integer, ByVal intUsuario As Integer) As Boolean
        Try
            Return CServicioLocalSQLServerDB.ActualizaBitacoraDECALOG(intId, intEstatus, intUsuario)
        Catch ex As Exception
            Dim idRegBit As Integer = CUtileria.GrabarBitacora("COVAFTL", "ActualizaBitacoraDECALOG", "Error al actualizar el estatus del folio de la bitacora de Decalog: " & intId.ToString & ". Error: " & ex.Message)
            CUtileria.CompletarRegBitacora(idRegBit)

            Return False
        End Try
    End Function

    Public Function ActualizaFolioDECALOG(ByVal intId As Integer, ByVal strFolio As String, ByVal intUsuario As Integer) As Boolean
        Try
            Return CServicioLocalSQLServerDB.ActualizaFolioDECALOG(intId, strFolio, intUsuario)
        Catch ex As Exception
            Dim idRegBit As Integer = CUtileria.GrabarBitacora("COVAFTL", "ActualizaFolioDECALOG", "Error al actualizar el folio de Decalog: " & intId.ToString & ". Error: " & ex.Message)
            CUtileria.CompletarRegBitacora(idRegBit)

            Return False
        End Try
    End Function

    Public Function ObtieneBitacoraDECALOG(ByVal strFechaInicio As String, ByVal strFechaFin As String) As List(Of CBitacoraDecalog)
        Try
            Dim dtDatos As DataTable = CServicioLocalSQLServerDB.ObtieneBitacoraDECALOG(7, strFechaInicio, strFechaFin)
            Dim lstBitacora As New List(Of CBitacoraDecalog)
            Dim b As CBitacoraDecalog

            If dtDatos.Rows.Count > 0 Then
                For Each dt As DataRow In dtDatos.Rows
                    b = New CBitacoraDecalog()
                    With b
                        .Id = Convert.ToInt32(dt(0))
                        .IdEstatus = Convert.ToInt32(dt(1))
                        .Estatus = Convert.ToString(dt(2))
                        .Archivo = Convert.ToString(dt(3))
                        .Folio = Convert.ToString(dt(4))
                        .Usuario = Convert.ToString(dt(5))
                        .Fecha = Convert.ToDateTime(dt(6))
                        .MensajeError = Convert.ToString(dt(7))
                    End With
                    lstBitacora.Add(b)
                    b = Nothing
                Next
            End If

            Return lstBitacora
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function ObtieneBitacoraDECALOGPorvenir(ByVal strFechaInicio As String, ByVal strFechaFin As String) As List(Of CBitacoraDecalog)
        Try
            Dim dtDatos As DataTable = CServicioLocalSQLServerDB.ObtieneBitacoraDECALOG(8, strFechaInicio, strFechaFin)
            Dim lstBitacora As New List(Of CBitacoraDecalog)
            Dim b As CBitacoraDecalog

            If dtDatos.Rows.Count > 0 Then
                For Each dt As DataRow In dtDatos.Rows
                    b = New CBitacoraDecalog()
                    With b
                        .Id = Convert.ToInt32(dt(0))
                        .IdEstatus = Convert.ToInt32(dt(1))
                        .Estatus = Convert.ToString(dt(2))
                        .Archivo = Convert.ToString(dt(3))
                        .Folio = Convert.ToString(dt(4))
                        .Usuario = Convert.ToString(dt(5))
                        .Fecha = Convert.ToDateTime(dt(6))
                        .MensajeError = Convert.ToString(dt(7))
                    End With
                    lstBitacora.Add(b)
                    b = Nothing
                Next
            End If

            Return lstBitacora
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function ActualizaMensajeErrorDECALOG(ByVal intId As Integer, ByVal strMensaje As String, ByVal intUsuario As Integer) As Boolean
        Try
            Return CServicioLocalSQLServerDB.ActualizaMensajeErrorDECALOG(intId, strMensaje, intUsuario)
        Catch ex As Exception
            Dim idRegBit As Integer = CUtileria.GrabarBitacora("COVAFTL", "ActualizaErrorDECALOG", "Error al actualizar el mensaje de error de Decalog: " & intId.ToString & ". Error: " & ex.Message)
            CUtileria.CompletarRegBitacora(idRegBit)

            Return False
        End Try
    End Function

    Public Function ActualizaClavesOp(ByRef lista As ObservableCollection(Of CClavesOp), ByRef sMsgError As String) As Boolean
        Try
            Return CServicioLocalSQLServerDB.ActualizaClavesOp(lista, sMsgError)
        Catch ex As Exception
            'xxx
            'Dim idRegBit As Integer = CUtileria.GrabarBitacora("COVAFTL", "ActualizaErrorDECALOG", "Error al actualizar el mensaje de error de Decalog: " & intId.ToString & ". Error: " & ex.Message)
            'CUtileria.CompletarRegBitacora(idRegBit)

            Return False
        End Try
    End Function

End Class
